Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - [Dom] Distinguere valori vuoti da valori errati
Forum - PHP - [Dom] Distinguere valori vuoti da valori errati

Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 1:40
Martedė, 28/08/2012
Salve a tutti (di nuovo) arrivato alla consclusione di una classe per l'elaborazione XML sotto forma di array ho riscontrato un piccolo bug:
Codice sorgente - presumibilmente Php

  1. private function levelArray($nodes) {
  2.                 $array = array();
  3.                 foreach($nodes as $node) {
  4.                         $subArray=array();
  5.                         switch($node->nodeType) {
  6.                                 case XML_TEXT_NODE:
  7.                                         if([b]strlen(trim($node->nodeValue))>0[/b]) {
  8.                                                 $array["@val"] = $node->nodeValue;
  9.                                         }
  10.                                 break;
  11.                                 case XML_ELEMENT_NODE:
  12.                                         $subArray = $this->levelArray($node->childNodes);
  13.                                         foreach($node->attributes as $attr) {
  14.                                                 $subArray["@attr"][$attr->name]=$attr->value;
  15.                                         }
  16.                                         $array[$node->nodeName][] = $subArray;
  17.                                 break;
  18.                         }
  19.                 }
  20.                 return $array;
  21.         }


Nel codice riportato nella parte in grassetto viene esguita una verifica del valore del nodo che dovrebbe verificare se il valore č effettivamente valido, lo script funziona perfettamente finche non viene immesso un valore vuoto. In questo caso ovviamente l'elemento con chiave @val non viene valorizzato con ""
Esempio:
Parto da...
Codice sorgente - presumibilmente Plain Text

  1. <?xml version="1.0" ?>
  2. <doc>
  3.   <element></element>
  4. </doc>


e ottengo...
Codice sorgente - presumibilmente Delphi

  1. Array ( [doc] => Array ( [0] => Array ( [element] => Array ( [0] => Array ( ) ) ) ) )


invece di...
Codice sorgente - presumibilmente Delphi

  1. Array ( [doc] => Array ( [0] => Array ( [element] => Array ( [0] => Array ( [@val] => ) ) ) ) )


Ho gia provato integrnado la condizione con
Codice sorgente - presumibilmente PHP

  1. or $node->nodeValue == ""


Ma non sembra funzionare.
Spero che nonostante l'ora di essermi fatto capire.
Un grazie in anticipo a tutti!

PM Quote